Ext.ns('Accion');
Ext.ns('Empleado');

/*
 * Crea Grid de Acciones
 */

Accion.Grid = Ext.extend(Ext.grid.GridPanel, {
	trackMouseOver : false,
	frame : false,
	url : '/cake/syscable/TcAcciones/buscaAccion',
	initComponent : function() {
		this.rowActions = new Ext.ux.grid.RowActions({
					header : 'Acciones',
					autoWidth : false,
					width : 70,
					keepSelection : true,
					actions : [{
								iconIndex : 'action1',
								qtipIndex : 'qtip1',
								iconCls : 'icon-undo',
								tooltip : 'Completar'
							}, {
								iconIndex : 'action2',
								qtipIndex : 'qtip2',
								iconCls : 'icon-undo',
								tooltip : 'Cancelar'
							}]
				});
		this.rowActions.on('action', this.onRowAction, this);

		this.rowExpander = new Ext.ux.grid.RowExpander({
			tpl : new Ext.Template(
					'--<br>',
					'<b>Numero Contrato:</b> {TcContrato-contrato}',
					'&nbsp &nbsp &nbsp &nbsp <b>Descripcion:</b> {TcAccione-descripcion}',
					'<br/><b>Fecha Adicion:</b> {TcAccione-created:date("d-F-Y")}',
					'&nbsp &nbsp &nbsp &nbsp<b>Modificado por:</b> {TcAccione-modificado_por}',
					'&nbsp &nbsp &nbsp &nbsp<b>Fecha Modificacion:</b> {TcAccione-modified:date("d-F-Y")}',
					'<p><b>Descripcion Edicion:</b> {TcAccione-descripcion_edicion}</p>'),
			getRowClass : function(record, index) {
				if (!record) {
					return '';
				}
				if (record.get('TcEstadoAccione-descripcion') == 'COMPLETADO') {
					return 'green-row';
				}
				if (record.get('TcEstadoAccione-descripcion') == 'CANCELADO') {
					return 'red-row';
				}
			}
		});
		var config = {
			store : new Ext.data.Store({
						proxy : new Ext.data.HttpProxy({
									url : this.url
								}),
						reader : new Ext.data.JsonReader({
									id : 'TcAccione-id',
									root : 'acciones',
									totalProperty : 'total',
									fields : [{
												name : 'TcAccione-id'
											}, {
												name : 'TcContrato-contrato'
											}, {
												name : 'TcContrato-descripcion'
											}, {
												name : 'TcAccione-tc_contrato_id'
											}, {
												name : 'TcAccione-fecha_inicial',
												type : 'date',
												dateFormat : 'Y-m-d'
											}, {
												name : 'TcAccione-adicionado_por'
											}, {
												name : 'TcAccione-descripcion_edicion'
											}, {
												name : 'TcAccione-descripcion'
											}, {
												name : 'MgTipoAccione-descripcion'
											}, {
												name : 'TcEstadoAccione-descripcion'
											}, {
												name : 'MgEmpleado-nombre_corto'
											}, {
												name : 'TcAccione-fecha_final',
												type : 'date',
												dateFormat : 'Y-m-d'
											}, {
												name : 'TcAccione-modificado_por'
											}, {
												name : 'TcAccione-modified',
												type : 'date',
												dateFormat : 'Y-m-d'
											}, {
												name : 'TcAccione-created',
												type : 'date',
												dateFormat : 'Y-m-d'
											}, {
												name : 'action1',
												type : 'string'
											}, {
												name : 'qtip1',
												type : 'string'
											}, {
												name : 'action2',
												type : 'string'
											}, {
												name : 'qtip2',
												type : 'string'
											}]
								}),
						sm : new Ext.grid.RowSelectionModel({
									singleSelect : true,
									listeners : {
										load : {
											scope : this,
											fn : function() {
												this.getSelectionModel()
														.selectFirstRow();
											}
										}
									}
								})
					}),
			columns : [this.rowExpander, {
						header : "ID",
						dataIndex : 'TcAccione-id',
						hidden : true
					}, {
						header : "id. Contrato",
						dataIndex : 'TcAccione-tc_contrato_id',
						width : 70,
						hidden : true
					}, {
						header : "No. Contrato",
						dataIndex : 'TcContrato-contrato',
						width : 70
					}, {
						header : "Tipo",
						dataIndex : 'MgTipoAccione-descripcion',
						width : 70
					}, {
						header : "Fecha Inicial",
						dataIndex : 'TcAccione-fecha_inicial',
						renderer : Ext.util.Format.dateRenderer('d-F-Y'),
						width : 110
					}, {
						header : "Descripcion",
						dataIndex : 'TcAccione-descripcion',
						width : 150,
						hidden : false
					}, {
						header : "Hecha Por",
						dataIndex : 'MgEmpleado-nombre_corto',
						width : 140
					}, {
						header : "Estado",
						dataIndex : 'TcEstadoAccione-descripcion',
						width : 80
					}, {
						header : "Adicionado Por",
						dataIndex : 'TcAccione-adicionado_por',
						width : 80
					}, {
						header : "Descripcion Edicion",
						dataIndex : 'TcAccione-descripcion_edicion',
						hidden : true
					}, {
						header : "Fecha Final",
						dataIndex : 'TcAccione-fecha_final',
						renderer : Ext.util.Format.dateRenderer('d-F-Y'),
						width : 110
					}, {
						header : "descripcion_contrato",
						dataIndex : 'TcContrato-descripcion',
						hidden : true,
						width : 70
					}, this.rowActions],
			stripeRows : true,
			columnLines : true,
			plugins : [this.rowActions, this.rowExpander],
			title : 'Acciones',
			iconCls : 'icon-actions',
			viewConfig : {
				forceFit : true
			}
		};
		Ext.apply(this, Ext.apply(this.initialConfig, config));
		this.tbar = new Ext.PagingToolbar({
					pageSize : 5,
					store : this.store,
					displayInfo : true,
					displayMsg : 'Mostrando Acciones del {0} - {1} de {2}',
					emptyMsg : 'No hay Acciones que mostrar'
				});
		Accion.Grid.superclass.initComponent.apply(this, arguments);
	},
	onRender : function() {
		this.store.load();
		Accion.Grid.superclass.onRender.apply(this, arguments)
	},

	onRowAction : function(grid, record, action, row, col) {
		var vtnEstadoAccion = new Ext.Window({
					id : 'vtnEstadoAccion',
					layout : 'border',
					closable : true,
					closeAction : 'close',
					width : 550,
					height : 310,
					plain : false,
					maximizable : false,
					resizable : false,
					// modal: true,
					// title : postit(2) + ' Contrato',
					frame : true,
					items : [{
								region : 'center',
								width : 200,
								layout : 'fit',
								frame : false,
								border : false,
								items : [{
											xtype : 'frmEstadoAccion',
											id : 'frmEstadoAccion'
										}]
							}]
				});
		Ext.getCmp('tfIdEstadoAccion').setValue(record.get('TcAccione-id'));
		Ext.getCmp('tfIdContratoEstadoAccion').setValue(record
				.get('TcAccione-tc_contrato_id'));
		Ext.getCmp('tfNoContratoEstadoAccion').setValue(record
				.get('TcContrato-contrato'));
		Ext.getCmp('tfDescripcionContratoEstadoAccion').setValue(record
				.get('TcContrato-descripcion'));
		switch (action) {
			case 'icon-accept' :
				Ext.getCmp('vtnEstadoAccion').show();
				Ext.getCmp('vtnEstadoAccion').setTitle('Completar Accion');
				Ext.getCmp('btnEstadoAccion').setText('Completar');
				Ext.getCmp('frmEstadoAccion').getForm().reset();
				Ext.getCmp('tfEstadoAccion').setValue('2');
				break;
			case 'icon-cancel' :
				Ext.getCmp('vtnEstadoAccion').show();
				Ext.getCmp('vtnEstadoAccion').setTitle('Anular Accion');
				Ext.getCmp('btnEstadoAccion').setText('Anular');
				Ext.getCmp('frmEstadoAccion').getForm().reset();
				Ext.getCmp('tfEstadoAccion').setValue('3');
				break;
			break;
	}
	}

});

Ext.reg('grdAccion', Accion.Grid);
/*
 * ventana para cambiar estado a contrato
 */

Accion.frmEstado = Ext.extend(Ext.form.FormPanel, {
	frame : false,
	width : 550,
	height : 300,
	trackResetOnLoad : true,
	labelWidth : 90,
	labelAlign : 'right',
	defaultType : 'textfield',
	id : 'frmEstadoAccion',
	padre : 'vtnEstadoAccion',
	grid : 'grdAccion',
	initComponent : function() {
		var config = {
			bodyStyle : 'padding: 5px 5px 0',
			buttons : [{
				type : 'submit',
				scope : this,
				id : 'btnEstadoAccion',
				handler : function() {
					Ext.getCmp(this.id).form.submit({
						timeout : 350,
						waitMsg : 'Porfavor Espere',
						waitTitle : 'Guardando Datos',
						scope : this,
						url : '/cake/syscable/TcAcciones/cambiar_estado_ext',
						success : function(form, action) {
							Ext.Msg.show({
										title : 'Mensaje',
										msg : 'Accion de '
												+ Ext.getCmp('btnEstadoAccion').text
												+ ' exitosa!',
										buttons : Ext.Msg.OK,
										scope : this,
										fn : function() {
											Ext.getCmp(this.padre).close();
											Ext.getCmp(this.grid).store.load();
										}
									});
						},
						failure : function() {
							Ext.MessageBox
									.alert('Mensaje', 'Error al Guardar!');
						}
					});
				}
			}],
			items : [{
						xtype : 'textfield',
						id : 'tfIdEstadoAccion',
						fieldLabel : 'No. accion',
						name : 'data[TcAccione][id]',
						allowBlank : false,
						readOnly : true,
						blankText : 'No puede estar vacio'
					}, {
						xtype : 'textfield',
						id : 'tfNoContratoEstadoAccion',
						fieldLabel : 'No. Contrato',
						disabled : true

					}, {
						xtype : 'textfield',
						id : 'tfDescripcionContratoEstadoAccion',
						fieldLabel : 'Descripcion Contrato',
						disabled : true
					}, {
						xtype : 'textarea',
						fieldLabel : 'Descripcion Edicion',
						name : 'data[TcAccione][descripcion_edicion]',
						allowBlank : false,
						width : 400,
						height : 60,
						grow : true,
						id : 'taDescripcionEdicionEtadoAccion',
						blankText : 'No puede estar vacio'
					}, {
						xtype : 'textfield',
						id : 'tfIdContratoEstadoAccion',
						fieldLabel : 'Id. Contrato',
						name : 'data[TcAccione][tc_contrato_id]',
						allowBlank : false,
						hidden : true,
						hideLabel : true,
						blankText : 'No puede estar vacio'
					}, {
						xtype : 'textfield',
						id : 'tfEstadoAccion',
						fieldLabel : 'Estado Accion',
						name : 'data[TcAccione][tc_estado_accione_id]',
						allowBlank : false,
						hidden : true,
						hideLabel : true,
						blankText : 'No puede estar vacio'
					}, {
						xtype : 'datefield',
						fieldLabel : 'Fecha de Finalizacion',
						name : 'data[TcAccione][fecha_final]',
						allowBlank : false,
						id : 'dfFechaFinalizacionEstadoAccion',
						blankText : 'No puede Estar Vacio',
						format : 'd-m-Y',
						todayText : 'Hoy'
					}]
		};
		Ext.apply(this, Ext.apply(this.initialConfig, config));
		Accion.frmEstado.superclass.initComponent.apply(this, arguments);
	}
});
Ext.reg('frmEstadoAccion', Accion.frmEstado);

Empleado.cbxListado = Ext.extend(Ext.form.ComboBox, {
			url : '/cake/syscable/TcAcciones/combobox/1/MgEmpleado/nombre_corto',
			typeAhead : true,
			loadingText : 'Buscando...',
			fieldLabel : 'Hecha por',
			triggerAction : 'all',
			allowBlank : false,
			forceSelection : true,
			selectOnFocus : true,
			width : 190,
			minChars : 2,
			initComponent : function() {
				var config = {
					store : new Ext.data.Store({
								proxy : new Ext.data.HttpProxy({
											url : this.url
										}),
								reader : new Ext.data.JsonReader({
											id : 'id',
											root : 'datos',
											totalProperty : 'total',
											fields : [{
														name : 'id'
													}, {
														name : 'nombre_corto'
													}]
										})

							}),
					mode : 'local',
					displayField : 'nombre_corto',
					valueField : 'id',
					hiddenName : 'data[TcAccione][mg_empleado_id]',
					emptyText : 'Escoja una empleado...',
					listEmptyText : 'No hay resultados',
					lazyRender : true
				};
				Ext.apply(this, Ext.apply(this.initialConfig, config));
				Empleado.cbxListado.superclass.initComponent.apply(this,
						arguments);
			},
			onRender : function() {
				this.store.load();
				Empleado.cbxListado.superclass.onRender.apply(this, arguments);
			}
		});
Ext.reg('cbxListadoEmpleado', Empleado.cbxListado);
Accion.cbxTipo = Ext.extend(Ext.form.ComboBox, {
			typeAhead : true,
			forceSelection : true,
			selectOnFocus : true,
			width : 190,
			minChars : 2,
			emptyText : 'Escoja el tipo de accion...',
			loadingText : 'Buscando...',
			url : '/cake/syscable/TcAcciones/combobox/1/MgTipoAccione/descripcion',
			initComponent : function() {
				var config = {
					store : new Ext.data.Store({
								proxy : new Ext.data.HttpProxy({
											url : this.url
										}),
								reader : new Ext.data.JsonReader({
											id : 'id',
											root : 'datos',
											totalProperty : 'total',
											fields : [{
														name : 'id'
													}, {
														name : 'descripcion'
													}]
										})

							}),
					mode : 'local',
					displayField : 'descripcion',
					valueField : 'id',
					fieldLabel : 'Tipo Accion',
					hiddenName : 'data[TcAccione][mg_tipo_accione_id]',
					triggerAction : 'all',
					allowBlank : false,
					listEmptyText : 'No hay resultados',
					lazyRender : true
				};
				Ext.apply(this, Ext.apply(this.initialConfig, config));
				Accion.cbxTipo.superclass.initComponent.apply(this, arguments);
			},
			onRender : function() {
				this.store.load();
				Accion.cbxTipo.superclass.onRender.apply(this, arguments);
			}

		});
Ext.reg('cbxTipoAccion', Accion.cbxTipo);
Accion.frmAgregar = Ext.extend(Ext.form.FormPanel, {
	frame : false,
	bodyStyle : 'padding: 5px 5px 0',
	width : 440,
	height : 270,
	trackResetOnLoad : true,
	id : 'frmAgregarAccion',
	padre : 'vtnAgregarAccion',
	grid : 'grdAccion',
	labelWidth : 90,
	labelAlign : 'right',
	defaultType : 'textfield',
	initComponent : function() {
		var config = {
			buttons : [{
				text : 'Agregar Accion',
				type : 'submit',
				scope : this,
				handler : function() {
					Ext.getCmp(this.id).form.submit({
								timeout : 350,
								waitMsg : 'Porfavor Espere',
								waitTitle : 'Guardando Datos',
								url : '/cake/syscable/TcAcciones/insertar_ext',
								scope : this,
								success : function(form, action) {
									Ext.Msg.show({
												title : 'Mensaje',
												msg : 'Accion Agregada exitosamente!',
												buttons : Ext.Msg.OK,
												scope : this,
												fn : function() {
													Ext.getCmp(this.padre)
															.close();
													Ext.getCmp(this.grid).store
															.load();
												}
											});
								},
								failure : function() {
									Ext.MessageBox.alert('Mensaje',
											'Error al Guardar!');
								}
							});
				}
			}],
			items : [{
						xtype : 'textfield',
						id : 'tfIdContratoAgregarAccion',
						fieldLabel : 'Id. Contrato',
						name : 'data[TcAccione][tc_contrato_id]',
						allowBlank : false,
						hideLabel : true,
						hidden : true,
						blankText : 'No puede estar vacio'
					}, {
						xtype : 'textfield',
						id : 'tfNoContratoAgregarAccion',
						fieldLabel : 'No. Contrato',
						name : 'data[TcContrato][contrato]',
						allowBlank : false,
						disabled : true, // 
						blankText : 'No puede estar vacio'
					}, {
						xtype : 'textarea',
						fieldLabel : 'Descripcion',
						name : 'data[TcAccione][descripcion]',
						allowBlank : false,
						width : 400,
						height : 60,
						grow : true,
						id : 'taDescripcionAgregarAccion',
						blankText : 'No puede estar vacio'
					}, {
						xtype : 'datefield',
						fieldLabel : 'Fecha Inicial',
						name : 'data[TcAccione][fecha_inicial]',
						allowBlank : false,
						id : 'dfFechaInicialAgregarAccion',
						blankText : 'No puede Estar Vacio',
						format : 'd-m-Y',
						todayText : 'Hoy'
					}, {
						xtype : 'cbxListadoEmpleado',
						id : 'cbxListadoEmpleadoAgregarAccion'
					}, {
						xtype : 'textfield',
						id : 'tfDescripcionContratoAgregarAccion',
						fieldLabel : 'Descripcion Contrato',
						name : 'data[TcContrato][descripion]',
						allowBlank : false, // hidden : true,
						blankText : 'No puede estar vacio',
						disabled : true
					}, {
						xtype : 'cbxTipoAccion',
						id : 'cbxTipoAccionAgregarAccion'
					}, {
						xtype : 'textfield',
						id : 'tfEstadoAgregarAccion',
						fieldLabel : 'Estado Accion',
						name : 'data[TcAccione][tc_estado_accione_id]',
						allowBlank : false,
						hideLabel : true,
						hidden : true,
						blankText : 'No puede estar vacio'
					}]
		};
		Ext.apply(this, Ext.apply(this.initialConfig, config));
		Accion.frmAgregar.superclass.initComponent.apply(this, arguments);
	}
});
Ext.reg('frmAgregarAccion', Accion.frmAgregar);

Accion.vtnAgregar = Ext.extend(Ext.Window, {
			id : 'vtnAgregarAccion',
			width : 550,
			height : 280,
			initComponent : function() {
				var config = {
					closable : true,
					modal : true,
					layout : 'border',
					closeAction : 'close',
					maximizable : false,
					resizable : false,
					title : 'Agregar Accion',
					items : [{
								region : 'center',
								width : 200,
								layout : 'fit',
								frame : false,
								border : false,
								items : [{
											xtype : 'frmAgregarAccion',
											id : 'frmAgregarAccion'
										}]
							}]
				};
				Ext.apply(this, Ext.apply(this.initialConfig, config));
				Accion.vtnAgregar.superclass.initComponent.apply(this,
						arguments);
			}
		});